package com.example.swordjava;


public class Test18 {

    public static void main(String[] args) {

        int[] a = {2, 3, 1, 0, 2, 5, 3};
    }

    class ListNode {
        ListNode next = null;
        int val;

        public ListNode(int val) {
            this.val = val;
        }
    }

    /**
     * 删除链表的节点
     * 给定单向链表的头指针和一个要删除的节点的值，定义一个函数删除该节点。返回删除后的链表的头节点。
     * <p>
     * 1.此题对比原题有改动
     * 2.题目保证链表中节点的值互不相同
     * 3.该题只会输出返回的链表和结果做对比，所以若使用 C 或 C++ 语言，你不需要 free 或 delete 被删除的节点
     */

    public ListNode deleteNode(ListNode head, int val) {
        // write code here
        ListNode cur = head;
        if (head == null || head.next == null) return head;
        if (head.val == val) return head.next;
        while (cur.next != null) {
            if (cur.next.val == val) {
                ListNode next = cur.next.next;
                cur.next = next;
            } else {
                cur = cur.next;
            }
        }
        return head;
    }

}
